package com.zyf.chapter02.behavior.chain.variance.linkedlist;

/**
 * 变体实现
 * @author yifeng
 */
public abstract class Handler {
    protected Handler successor = null;

    public void setSuccessor(Handler successor) {
        this.successor = successor;
    }

    /**
     * 唯一变化点就是该方法中，无需判断是否需要处理，直接往下执行即可
     *
     */
    public void handle() {
        doHandle();
        successor.handle();
    }

    /**
     * 具体的处理器只需要实现自己的业务逻辑即可，无需关心链条往下调用。
     * @return 能否处理，能:true，不能:false
     */
    public abstract boolean doHandle();


}
